<?php

/**
 * Texyla script loader
 * Includes all Texyla scripts to one file
 * Postup:
 * - Zakomentujte ty pluginy, které nechcete nahrát,
 * - Nastavte právo zápisu do souboru texyla.loader.js
 * - Zadejte do prohlížeče adresu k tomuhle scriptu (texyla.js.loader.php)
 * - Tím bude vytvořena nová verze texyla.loader.js, kterou můžete volat v hlavičce stránky.
 */


$jQuery = array(
    // Jquery a pluginy k němu
	'jquery',
	'jquery.ui',
	'ajaxfileupload',
	'jquery.collapsor',
);

$core = array(
	// jádro texyly
	'texyla',
	'selection',
	'texy',
	'buttons',
	'dom',
	'view',
);


$plugins = array(
    // pluginy texyly
	'emoticon',
	'file-browser',
	'file-upload',
	'img',
	'img-upload',
	'img-gallery',
	'keys',
	'link',
	'resizable-textarea',
	'symbol',
	'table',
	'window',
);
class loadTexyla {
    private $error = false;
    private $errMsg = Null;
    private $scripts = '';
    
    public $saveFile = '';

    public function __construct() {

    }

    /**
     * metoda z $dir a $names generuje cesty k jednotlivým souborům a snaží se jejich
     * obsah uložit do proměnné $scripts. Pokud načtení selže je do error uložena položka s chybou
     * parametr $subDir slouží ke skládání cesty u texyla pluginů
     * @param string $dir
     * @param array $names
     * @param int $subDir
     */
    public function load($dir, $names, $subDir = 0) {
        $root = dirname(__FILE__) . '/' . $dir . '/';
         if (is_array($names)) {
            foreach ($names as $name) {
                $path = ($subDir === 0 ? $name : "$name/$name") . '.js';
                $file = $root . $path;
                if (file_exists($file)) {
                    $this->scripts .= "\n\n\n\n/** " . $file . "*/\n" . file_get_contents($file);
                } else {
                    $this->error = true;
                    $this->errMsg[] = '<p>Soubor <b>' . $file . '</b> se nepodařilo nahrát, zřejmě neexistuje.';
                }
            }
        } else {
            $this->error = true;
            $this->errMsg[] = '<p>Špatná vstupní data. Seznam souborů musí být array. ';
        }
    }

    /**
     * vrátí buď chybovku nebo úspěch
     * @return string
     */
    public function errors() {
        if ($this->error === true && is_array($this->errMsg)) {
            return '<h1>Došlo k chybám</h1>' . join("\n", $this->errMsg);
        } else {
            return '<h1>Gratuluji</h1><p>Soubor ' . $this->saveFile . ' byl úspěšně obnoven.</p>';
        }
    }

    /**
     * Save to texyla.loader.js
     */
    public function saveFile() {
        if(!@file_put_contents($this->saveFile, $this->scripts)) {
            $this->error = true;
            $this->errMsg[] = '<p>Nelze zapisovat data do souboru <b>' . $this->saveFile . '</b>. Nastavte prosím tomuto souboru právo zápisu.</p >';
        }
    }

}


/**
 * Load to Texyla javascripts sources
 */
$loader = new loadTexyla;
$loader->saveFile = dirname(__FILE__) . '/texyla.loader.js';
$loader->load('../jquery', $jQuery);
$loader->load('js', $core);
$loader->load('plugins', $plugins, 1);
$loader->load('languages', array('cs'));
$loader->saveFile();
header("Content-Type: text/html; charset=UTF-8");
echo $loader->errors();


